#ifndef ITERADORAVL_H
#define ITERADORAVL_H

#include "Iteracion.h"
#include "NodoAVL.h"
#include "Array.h"

template <class T>
class IteradorAVL: public Iteracion<T>
{
public:
	IteradorAVL(Puntero<NodoAVL<T>> raiz, nat largo);

	void Reiniciar();
	bool HayElemento() const;
	const T& ElementoActual() const;
	void Avanzar();
	
private:

	Puntero<NodoAVL<T>> raiz;
	nat tope;
	Array<Puntero<NodoAVL<T>>> pila;
		
	void AgregarCaminoAlMenor(Puntero<NodoAVL<T>> nodo);
	
};

#include "IteradorAVL.cpp"
#endif